The application relates generally to the field of generating and manipulating distributed computer programs for computers on a network.
The use of conventional high-level programming languages (e.g., Java, C++, C#, or C) to create programs for a network of computers that allow the computers to communicate with each other to accomplish a task can be very complex. In order to allow the computers in such a network to communicate with one another successfully, programmers must utilize complex network protocols, remote function calls, and complicated logic.
Further, such programming can be cumbersome and time consuming. For example, if a bug is found in a particular program during execution, the program that requires modification will need to be shut down, its code will need to be modified and recompiled, and the program will need to be restarted. In some cases, programs running on other computers within the network that are integrated with the program that needs to be shut down will also need to be shut down and restarted in order to account for changes to protocols or shared libraries. Programs that rely on complicated graphical rendering models and associated large files may have long start-up times and thus will additionally slow program development.
In addition, because these programs are written in high-level, abstract programming languages, it is often difficult for programmers to track and/or control directly the amount of memory that the programs are using. Further, without the ability to directly control the memory utilized by these programs, programmers have difficulty in optimizing the amount of network bandwidth versus the amount of memory used by the programs.
Accordingly, there exists a need for a programming technique that permits programmers to generate distributed programs for thin-client networked computers and, more generally, for networked computers structured according to any of the following models: client-server, peer-to-peer, or hybrid, which is a combination of the previous two models.